% !TEX TS-program = pdflatex
% !TEX encoding = UTF-8 Unicode

\documentclass[a4paper,10pt,landscape]{article}

\usepackage[landscape]{geometry}
\usepackage{graphicx}
\usepackage{tikz-er2}
\usepackage{lscape}

\begin{document}

\usetikzlibrary{positioning}
\usetikzlibrary{shadows}

\tikzstyle{every entity}		= [top color=white, bottom color=blue!30,  draw=blue!50!black!100, drop shadow]
\tikzstyle{every weak entity} 	= [drop shadow={shadow xshift=.7ex, shadow yshift=-.7ex}]
\tikzstyle{every attribute} 	= [top color=white, bottom color=yellow!20, draw=yellow, node distance=1cm, drop shadow]
\tikzstyle{every relationship} 	= [top color=white, bottom color=red!20, draw=red!50!black!100, drop shadow]
\tikzstyle{every isa} 			= [top color=white, bottom color=green!20, draw=green!50!black!100, drop shadow]


\centering
\scalebox{.86}{
\begin{tikzpicture}[node distance=1.5cm, every edge/.style={link}]

	\node[weak entity] (turno) {TURNO};
	\node[attribute] (fecha_hora) [above=1cm of turno] {\discriminator{Fecha y Hora}} edge (turno);

	\node[relationship] (turno_persona) [right=1cm of turno] {Tiene}  edge [total] node[auto,swap] {(0,N)} (turno);

	\node[entity] (persona) [right=1cm of turno_persona] {PACIENTE} edge node[auto,swap] {(1,1)} (turno_persona);
	\node[attribute] (numero_historia_clinica) [above=1cm of persona] {\key{Nro Historia Clinica}} edge (persona);

	\node[relationship] (persona_plan) [right=1cm of persona] {Pertenece a} edge node[auto,swap] {(0,N)} (persona);

	\node[weak entity] (plan) [right=1cm of persona_plan] {PLAN} edge node[auto,swap] {(0,1)} (persona_plan);	
	\node[attribute] (cod_plan) [above=1cm of plan] {\discriminator{cod\_plan}} edge (plan);

	\node[relationship] (plan_obra_social) [right=1cm of plan] {Tiene varios}edge [total] node[auto,swap]  {(1,N)} (plan);

	\node[entity] (obra_social) [right=1cm of plan_obra_social] {OBRA SOCIAL} edge node[auto,swap] {(1,1)} (plan_obra_social);
	\node[attribute] (razon_social_obra_social) [above=1cm of obra_social] {\key{Razon social}} edge (obra_social);

	\node[isa] (turno_es_un) [below=1cm of turno] {Es Un} edge (turno);

	\node[entity] (turno_actuante) [below right=1cm of turno_es_un] {TURNO ESPECIALISTA} edge (turno_es_un);
	\node[attribute] (tipo_turno_turno_actuante) [above=1cm of turno_actuante] {Tipo de turno} edge (turno_actuante);
	\node[attribute] (es_sobre_turno_turno_actuante) [above right=1cm of turno_actuante] {Es sobre turno (calculable)} edge (turno_actuante);

	\node[entity] (turno_recurso) [below left=1cm of turno_es_un] {TURNO RECURSO} edge (turno_es_un);

	\node[relationship] (turno_actuante_bloque_actuante) [below =1cm of turno_actuante] {Compuesto por} edge node[auto,swap] {(0,N)} (turno_actuante);

	\node[weak entity] (bloque_actuante) [right=1cm of turno_actuante_bloque_actuante] {BLOQUE ESPECIALISTA} edge node[auto,swap] {(1,1)} (turno_actuante_bloque_actuante);
	\node[attribute] (dia_bloque_actuante) [above left=0.5cm of bloque_actuante] {\discriminator{Dia}} edge (bloque_actuante);
	\node[attribute] (hora_desde_bloque_actuante) [above=0.5cm of bloque_actuante] {\discriminator{Hora desde}} edge (bloque_actuante);
	\node[attribute] (hora_hasta_bloque_actuante) [above right=0.7cm of bloque_actuante] {\discriminator{Hora hasta}} edge (bloque_actuante);
	\node[attribute] (acepta_sobre_turnos_bloque_actuante) [below right=0.2cm of bloque_actuante] {Acepta sobre turnos} edge (bloque_actuante);
	\node[attribute] (tipo_intervalo_turnos_bloque_actuante) [below left=1cm of bloque_actuante] {Tipo de intervalo} edge (bloque_actuante);

	\node[relationship] (actuante_bloque_actuante) [below=1cm of bloque_actuante] {Atiende en} edge [total] node[auto,swap] {(1,N)} (bloque_actuante);

	\node[entity] (actuante) [below=1cm of actuante_bloque_actuante] {ESPECIALISTA} edge node[auto,swap] {(1,1)} (actuante_bloque_actuante);
	\node[attribute] (legajo) [above left=1cm of actuante] {\key{Legajo}} edge (actuante);
	\node[attribute] (apellido_profesional) [left=1cm of actuante] {Apellido} edge (actuante);
	\node[attribute] (nombre_profesional) [below left=1cm of actuante] {Nombre} edge (actuante);

	\node[isa] (actuante_es_un) [below=1cm of actuante] {Es Un} edge (actuante);

	\node[entity] (profesional) [below right=1cm of actuante_es_un] {PROFESIONAL} edge (actuante_es_un);
	\node[attribute] (matricula_nacional) [right=1cm of profesional] {Matricula Nacional} edge (profesional);

	\node[entity] (tecnico) [below left=1cm of actuante_es_un] {TECNICO} edge (actuante_es_un);
	\node[attribute] (matricula_nacional) [left=1cm of tecnico] {Matricula} edge (tecnico);

	\node[relationship] (actuante_espcialidad) [right=1cm of actuante] {Se espcializa en} edge node[auto,swap] {(0,N)} (actuante);

	\node[entity] (especialidad) [right=1cm of actuante_espcialidad] {ESPEC/SUBESPEC} edge node[auto,swap] {(1,N)} (actuante_espcialidad);
	\node[attribute] (cod_especialidad) [above=1cm of especialidad] {\key{cod\_espec}} edge (especialidad);

	\node[relationship] (espcialidad_accion_medica) [right=1cm of especialidad] {Permite realizar} edgenode[auto,swap] {(1,1)} (especialidad);

	\node[weak entity] (accion_medica) [above=1cm of espcialidad_accion_medica] {ACCION MEDICA} edge [total] node[auto,swap] {(1,N)} (espcialidad_accion_medica) ;
	\node[attribute] (cod_accion_medica) [above right=0.2cm of accion_medica] {\discriminator{cod\_acc}} edge (accion_medica);
	\node[attribute] (condiciones_accion_medica) [above=1.5cm of accion_medica] {Condiciones} edge (accion_medica);

	\node[relationship] (turno_actuante_accion_medica) [right=6cm of turno_actuante] {Para una} edge node[auto,swap] {(0,N)} (turno_actuante) edge node[auto,swap] {(1,1)} (accion_medica);

	\node[relationship] (plan_cubre) [below right=4cm of plan] {Cubre} edge node[auto,swap]  {(0,N)} (plan)  edge node[auto,swap] {(1,N)} (accion_medica);

	% fechas canceladas
	\node[relationship] (bloque_actuante_cancela) [right=1cm of bloque_actuante] {Es cancelado en} edge node[auto,swap] {(1,1)} (bloque_actuante);

	\node[weak entity] (fecha_de_cancelacion) [below=1cm of bloque_actuante_cancela] {FECHA\_DE\_CANCELACION} edge [total] node[auto,swap] {(1,N)} (bloque_actuante_cancela);

	% turno recurso
	\node[relationship] (turno_recurso_bloque_recurso) [below=1cm of turno_recurso] {Compuesto por} edge node[auto,swap] {(0,N)} (turno_recurso);

	\node[weak entity] (bloque_recurso) [below=1cm of turno_recurso_bloque_recurso] {BLOQUE RECURSO} edge node[auto,swap] {(1,1)} (turno_recurso_bloque_recurso);

	\node[relationship] (recurso_bloque_recurso) [below=1cm of bloque_recurso] {Disponible en} edge  [total] node[auto,swap] {(0,N)} (bloque_recurso);

	\node[entity] (recurso) [below=1cm of recurso_bloque_recurso] {RECURSO} edge node[auto,swap] {(1,1)} (recurso_bloque_recurso);

\end{tikzpicture}
}


\end{document}
